package org.huangrui.spark.scala.core.rdd.operate.transform

import org.apache.spark.{SparkConf, SparkContext}

/**
 * @Author hr
 * @Create 2024-10-17 16:05 
 */
object Spark09_Operate_Transform_KV_groupBy {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setMaster("local[*]").setAppName("spark")
    val sc = new SparkContext(conf)
    // TODO groupBy：按照指定的规则对数据进行分组
    //           给每一个数据增加一个标记，相同的标记的数据会放置在一个组中，这个标记就是组名
    //      groupBy结果：就是KV类型的数据
    //           (0，【2，4】) => (0，6)
    //           (1, 【1，3】) => (1，4)
    /*
     1 => 1
     2 => 0
     3 => 1
     4 => 0
     */
    val nums = List(1, 2, 3, 4)
    val rdd = sc.parallelize(nums, 2)
      .groupBy((num: Int) => num % 2)
      .mapValues((iter: Iterable[Int]) => iter.sum)

    rdd.collect().foreach(println)
    sc.stop()
  }
}
